package com.krisyu.MementoPattern.mpExpand1;

/**
 * @DATE 2022/1/8
 * @Author KrisYu
 * @Description 备忘录发起者角色， 实现了clone，来保存整个对象，以至于保存状态（基本类型或不可变类型的成员变量，且不被final修饰）
 */
public class Originator implements Cloneable{
    // 备份状态属性
    private Originator backup;
    private String state = "";

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }
    // 创建备份
    public void createMemento(){
        this.backup = this.clone();
    }
    // 从备份中恢复之前保存的状态
    public void restoreMemento(){
        this.setState(this.backup.getState());
    }

    @Override
    public Originator clone(){
        try {
            return (Originator) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
}
